Enviado por: Electros
Fecha: 2003-06-05 02:52:23
Actualizado: 2006-04-10 08:56:25
¿Usa base de datos?: 0
Visitas: 3077
Votos: 0
Descargado: 1220 veces
Valoración: 0.00
» Valora este script «
ZipDescargar

[b]Novedades:[/b] Por motivos de compatibilidad y seguridad he decidido modificar el script y usar variables superglobales (ej. $_FILE['archivo']['name'] en vez de $archivo_name), con esto ser� compatible desde la versi�n PHP 4 en adelante adem�s de aumentar la seguridad. Si tienes dudas sobre que son las variables superglobales visita el siguiente tutorial [url=/tutoriales/t/18]1.8 Variables superglobales[/url]. Este es un script que te permite subir archivos a una web, el funcionamiento es muy sencillo, s�lo necesitas de un archivo llamado subir.php. Mete el siguiente c�digo en un archivo llamado por ejemplo subir.php: [codigo]<? if(isset($_POST['enviar'])) { if($_FILES['archivo']['size'] <= 102400) { move_uploaded_file($_FILES['archivo']['tmp_name'],'carpeta/'.$_FILES['archivo']['name']) ; echo 'El archivo ha sido subido con �xito.' ; } else { echo 'El archivo supera los 100 KB.' ; } } ?> <form method="post" action="<?=$_SERVER['PHP_SELF']?>" enctype="multipart/form-data"> <input type="file" name="archivo"> <input type="submit" name="enviar" value="Enviar"> </form>[/codigo] Si has notado, la funci�n [b]move_uploaded_file()[/b] significa "mover archivo subido", lo que pasa es que cuando env�as un archivo a trav�s de PHP, este se sube primero a una carpeta temporal en donde se mantiene durante la ejecuci�n del script, aqu� es donde podemos hacer distintas comprobaciones como el tama�o, el tipo de extensi�n, etc., despu�s de esta parte lo puedes mover a cualquier carpeta de tu sitio para guardarlo definitivamente. Dentro del condicional if(isset($_POST['enviar']) puedes agregar m�s funciones, por ejemplo, si quieres evitar que al subir los archivos se sobreescriban con los que est�n en el servidor puedes agregar la funci�n [b]file_exists()[/b] de esta forma: [codigo] if($_FILES['archivo']['size'] <= 102400 && !file_exists('carpeta/'.$_FILES['archivo']['name'])) { move_uploaded_file($_FILES['archivo']['tmp_name'],'carpeta/'.$_FILES['archivo']['name']) ; } [/codigo] En la condici�n se indica que si el archivo no existe se puede subir el archivo. El script est� muy sencillo para poder ser entendido, sin embargo el usarlo as� puede permitir que cualquiera pueda subir c�digo malicioso y ejecutarlo en tu p�gina, para evitarlo puedes usar una condici�n como esta: [codigo] $partes = explode('.',$_FILES['archivo']['name']) ; $num = count($partes) - 1 ; $extension = $partes[$num] ; if($_FILES['archivo']['size'] <= 102400 && !file_exists('carpeta/'.$_FILES['archivo']['name']) && $extension == 'zip') { move_uploaded_file($_FILES['archivo']['tmp_name'],'carpeta/'.$_FILES['archivo']['name']) ; } [/codigo] Con esto s�lo se aceptar�n archivos con extensi�n .zip, puedes agregar tantas extensiones como desees. En algunos servidores puede ser necesario darle el permiso CHMOD 777 a la carpeta en donde se subir�n los archivos, para hacerlo usa cualquier programa FTP y en los archivos del lado servidor haz click derecho sobre la carpeta y busca una opci�n que diga CHMOD, Permisos o Propiedades.